import axios from "axios";
import store from '@/store/index'
import { Message,Loading } from 'element-ui';
//创建axios实例，将来对创建出来的实例进行自定义配置
 
 // 定义 loading 
 let loading
 
// 定义一个变量，有请求变量加一，收到响应变量减一
let loadingCount = 0

 // loading开始 方法
 function startLoading() {  
  // element-ui loading 服务调用方式  
      loading = Loading.service({ 
          lock: true,
          text: '拼命加载中...',
          spinner: 'el-icon-loading',  // 自定义图标
          background: 'rgba(0, 0, 0, 0.7)'
      })
  }
  
  // loading结束 方法
  function endLoading() {  
      loading.close()
  }


  
export function startLoadingAddCount() {
  if (loadingCount === 0) {
      startLoading()
  }
  loadingCount++
}


export function endLoadingSubCount() {
  loadingCount--
  if (loadingCount === 0) {
      endLoading()
  }
}


const instance = axios.create({
    // baseURL: 'http://120.79.83.142:8083/',
    baseURL: '',
    timeout: 5000,
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      }
    // headers: {'X-Custom-Header': 'foobar'}
  });

//自定义配置： 请求/响应 拦截器
  // 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么

    const token = store.getters.token
    
    if (token) {
      config.headers['token'] = token
      // console.log(token)
    } else if (token && config.url != '/login') {
      window.location.href = '/login'
      return false
    }

     // 请求显示loading 效果
    //  startLoadingAddCount();

    return config;
  }, function (error) {
    // 对请求错误做些什么
    
    // endLoadingSubCount();
    return Promise.reject(error);
  });

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    const res = response.data;
    console.log('request:',res)
    if(res.code != 1){
      // console.log(res)
      //给提示
      console.log('message:'+res.msg)
      // handleErrorData(response.data);
      return Promise.reject(res.msg)
    }
    return res;
  }, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    
    // endLoadingSubCount();
    return Promise.reject(error);
  });

  function handleErrorData(errMes){
    if(errMes.message){
      Message.error(errMes.message);
    }else{
      switch(errMes.code){
        case 401 :
          Message.error("未授权，请重新登录!");
          break;
        case 403 :
          Message.error("拒绝访问");
          break;
        case 404 :
          Message.error("很抱歉，资源未找到!");
          break;
        case 500 :
          Message.error("服务器错误!");
          break;
        case 504 :
          Message.error("网络超时!");
          break;
        default :
          Message.error("服务正在联调中，请稍后!");
          break;
      }
    }
  }


  export default instance